home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / GRAPHICS / MAND50.ZIP / MANDEL.DOC < prev    next >
Encoding:
Text File  |  1994-10-01  |  31.9 KB  |  676 lines

  1.                                Mandelbrot/Julia
  2.                                  Set Generator
  3.                         Operating and Reference Manual
  4.                                   Version 5.0
  5.  
  6.                                  Installation
  7.  
  8.     The Mandelbrot/Julia Set Generator program requires an IBM compatible 
  9. computer with at least 512K of memory, a VGA display and a Microsoft 
  10. compatible mouse. The installation process is quite easy. 
  11.  
  12.     First, make a backup copy of your Mandelbrot/Julia Set Generator program 
  13. disk. If necessary, consult your PC-DOS/MS-DOS manual for a description of the 
  14. Diskcopy command. Save the original program disk in a safe place and use the 
  15. copy as the working program disk. 
  16.  
  17.     Second, while it is possible to use the Mandelbrot/Julia Set Generator on 
  18. a floppy disk system, a hard disk system is a necessity if you wish to store a 
  19. number of image files. To install the Mandelbrot/Julia Set Generator on a hard 
  20. disk use the following steps: 
  21.  
  22.     1. Insert the floppy disk in your computer in drive A. (or B if necessary) 
  23.     2. Type A: (or B:)
  24.     3. Type INSTALL A C
  25.  
  26.     Any hard drive letters can be used, for example INSTALL B D will install 
  27. the program from floppy drive B to hard drive D. The installation will create 
  28. a directory called MAND5 on your hard drive and you will need to enter a 
  29. CD\MAND5 to change to the Mandelbrot/Julia Set Generator directory before 
  30. running the program. Once installed just type MAN to start the program. All 
  31. the files for Mandelbrot/Julia Set Generator need to be in the same directory 
  32. for the program to operate successfully. 
  33.  
  34.                       Quick Start for Impatient New Users 
  35.  
  36.     Type MAN to start the program. After the mouse cursor appears click it on 
  37. the Load Image button at the left. When the window appears with the list of 
  38. image file names, simply clicking on one of them will display the image using 
  39. the current color mask. If the image file contains a specific color mask 
  40. filename it will be automatically loaded prior to displaying the image. Most 
  41. commands can be interrupted by a simple mouse click. 
  42.  
  43.     The zoom window feature is started by double clicking on the displayed 
  44. image. Once the zoom window appears, with its crossed center lines, it can be 
  45. moved by holding down the left mouse button, while the cursor is inside the 
  46. zoom window, and positioning the window. The zoom window size can be increased 
  47. or reduced by holding down the left mouse button and moving the mouse cursor 
  48. horizontally while it is outside the zoom window. Once correctly positioned 
  49. the mouse cursor should be clicked on the right gray panel, which will store 
  50. the changed dimensions. The zoom window can be abandoned by clicking the mouse 
  51. cursor on the left gray panel. Be careful not to drag the mouse cursor onto 
  52. the gray panels while resizing. The Set Values button should be clicked on 
  53. next, and the image file name changed. If this is not done the original image 
  54. file will be erased. Clicking on the Make Image button will start the 
  55. generation of the new zoomed image. 
  56.  
  57.                     The Command Buttons and Their Function 
  58.  
  59.     Set Values
  60.  
  61.     The Set Values command allows the user to set the initial parameters that 
  62. will be used by the Mandelbrot/Julia Set Generator to begin generating a new 
  63. image. These values are also available for inspection when an image has been 
  64. displayed. The values and their range are: 
  65.  
  66.     Item                             Range
  67. -----------------------------------------------------
  68.     X center value                   -10 to 10
  69.     Y center value                   -10 to 10
  70.     Magnification                    >0
  71.     A value (if a Julia image)       -10 to 10
  72.     B value (if a Julia image)       -10 to 10
  73.     Dwell                            1 to 8191
  74.     Image width in pixels            10 to 4800
  75.     Image type [M J]                 M or J
  76.     Full/Partial image [F P]         F or P
  77.     Default color mask file          xxxxxxxx.MSK
  78.     Display type [0 1]               For future use
  79.     256 color palette number         For future use
  80.     Image file name                  xxxxxxxx.MAN 
  81.                                      or xxxxxxxx.MAR 
  82.  
  83.     To change a value simply click inside the rectangle where the value is 
  84. displayed and then key in a new value or file name. File name extensions must 
  85. be .MSK for color masks, .MAN for regular images and .MAR for those that are 
  86. recursive. 
  87.  
  88.     The A and B values are only displayed with Julia images. If the recursive 
  89. image generator is used the image width must be a member of the 2^n set, ie. 
  90. 16, 32, 64, 128 etc. The program maintains the Full/Partial image status and 
  91. these values cannot be changed by the user. 
  92.  
  93.     Color Masks 
  94.  
  95.     When the Color Masks command is chosen a popup window presents the four 
  96. options: 
  97.  
  98.      Create/Display color mask
  99.      Select color mask
  100.      Select palette 
  101.      QUIT 
  102.  
  103.     Clicking on the Create/Display color mask option allows the user to 
  104. create, edit and save color masks. 
  105.  
  106.     Clicking on the Color mask file name box allows you to type in a file 
  107. name. The file name must have the extension .MSK or you will not be able to 
  108. select it later. Ranges of dwell values should be typed into the squares on 
  109. the left. Just click on the square, type in a dwell value and <Enter>. The 
  110. colors are selected by clicking on the desired color of the color wheel in the 
  111. upper right and then clicking on the odd and even boxes at the right. The 
  112. selected color is displayed between the circular menu and the color wheel. If 
  113. the first line of the color mask reads: 
  114.  
  115.     0         9       [blue box]   [white box]
  116.  
  117. then dwell values from 0 to 9 will be colored blue if odd and white if even. 
  118. If a solid color is desired the color boxes should be filled with the same 
  119. color. The end of a color mask should be designated with a negative value 
  120. entered into the first dwell box.  The default color mask on startup is M1.MSK 
  121. and its values are: 
  122.  
  123.     Dwell Range     Odd color     Even color
  124. -----------------------------------------------
  125.     0     9         [blue box]    [white box]
  126.     10    19        [red box]     [red box]
  127.     20    510       [yellow box]  [yellow box]
  128.     511   511       [black box]   [black box]
  129.     -1
  130.  
  131.     In the case of M1.MSK, any dwell values larger than 511 will be colored 
  132. black (color 0 in the default palette). 
  133.  
  134.     The circular menu at upper left has four options. Clicking on the up or 
  135. down arrow jumps to the previous or next 16 color mask entries. A total of 256 
  136. entries can be placed in one color mask. The SAVE option stores the color mask 
  137. currently displayed under the name specified in the Color mask file name box. 
  138. The new color mask becomes the currently selected color mask. 
  139.  
  140.     Clicking on the Select color mask option presents the user with a large 
  141. window and the names of the color masks that have been stored. Clicking on a 
  142. color mask name will select and load that color mask. It then can be viewed by 
  143. selecting the Create/Display color mask option. 
  144.  
  145.     Clicking on the Select palette option opens a window that displays the 
  146. current VGA color palette of 16 colors. Clicking on the Default box will load 
  147. the default VGA color palette. Clicking on the arrows will select other 
  148. prestored color palettes, up to number 57. 
  149.  
  150.     The QUIT option returns the user to the main menu. 
  151.  
  152.     Make Image 
  153.  
  154.     Selecting the Make Image command generates a Mandelbrot or Julia image 
  155. based upon the parameters entered in the Set Values command. A warning is 
  156. issued before the generation begins to allow the user to change the file name, 
  157. as any existing file of this name will be erased. 
  158.  
  159.     A very simple way to generate images is first to use Load Image to display 
  160. a previously generated image. Double clicking on the image will produce a zoom 
  161. window overlaid on the display. Clicking and holding down the left mouse 
  162. button allows the zoom window to be dragged about the image to an interesting 
  163. portion of the image. The zoom window can be resized by dragging the mouse 
  164. pointer to the left and right outside the zoom window. Once the zoom window 
  165. has been positioned and sized, clicking on the gray panel at right will 
  166. automatically store the new zoomed values into the Set Values area. Be careful 
  167. not to drag the mouse cursor onto the gray panels while resizing. The user 
  168. will probably wish to enter a new image file name using the Set Values command 
  169. (this will prevent the original image file from being erased), and then 
  170. generate a new image of the area defined by the zoom window with the Make 
  171. Image command. While the zoom window is present the procedure can be cancelled 
  172. by clicking on the right gray panel around the command buttons. The zoom 
  173. window will only work on images 480 pixels wide, or less.
  174.  
  175.     Load Image 
  176.  
  177.     The Load Image command presents the user with a list of image file names 
  178. that have been produced with the .MAN extension. Clicking on a file name will 
  179. display the image with the current color mask if the selected image has no 
  180. default color mask file name. A brief double tone is sounded if there is no 
  181. default color mask file name. If a color mask name was included when the image 
  182. was generated, this color mask will be loaded before the image is displayed. 
  183. Partially generated images will automatically continue generation when 
  184. displayed with this command. Once an image is displayed double clicking on the 
  185. image will produce a zoom window as described under the Make Image command. 
  186.  
  187.     Make R Image 
  188.  
  189.     The Make R Image command functions similarly to the Make Image command 
  190. except a recursive procedure is used in place of the normal line by line 
  191. generation. The image file should be given the .MAR extension so that it will 
  192. be properly handled when using the Load R Image command. In some cases this 
  193. recursive procedure will generate images faster that the normal method. 
  194. Partially generated images cannot be displayed with generation automatically 
  195. continuing as is the case with the normal Load Image command. Image files are 
  196. generally larger with the recursive procedure. 
  197.  
  198.     Load R Image 
  199.  
  200.     The Load R Image command displays a recursive image previously generated 
  201. with a .MAR extension in the file name. A list of such files is presented and 
  202. the selected image is clicked on. Partially generated images will not be 
  203. automatically continued as with the Load Image command. 
  204.  
  205.     3-D Image 
  206.  
  207.     The 3-D Image command displays an image generated with the Make Image 
  208. command in a pseudo 3-D style. The display algorithm is a simple one, but very 
  209. slow. VGA displays have limitations when displaying 3-D Mandelbrot images. 
  210. Best results occur with color masks that contain multiple colors and have the 
  211. dwell ranges broken into many small steps. Large values for the maximum dwell 
  212. may result in the top of the image being lost. Partially generated images will 
  213. not be automatically continued as with the Load Image command. 
  214.  
  215.     Plot Dwell 
  216.  
  217.     The Plot Dwell command reads all the dwell values of an image stored with 
  218. the .MAN extension and sums them. The sums are then plotted with the current 
  219. color mask used for each dwell value plotted. Only dwell values of 2,400 or 
  220. less will be plotted. These plots give an indication of how many points in the 
  221. image have the various dwell values and can be useful in constructing a color 
  222. mask that will display the image to best advantage. 
  223.  
  224.     Make PCX   
  225.  
  226.     The Make PCX command allows the user to select an image file stored with 
  227. the .MAN extension and create a PCX image file. A 16 color PCX file using the 
  228. default VGA color palette can be chosen or several 256 color PCX formats are 
  229. available. Click on one of the small boxes to select what type of PCX file you 
  230. desire. The color sequence of each of the 256 color formats is displayed. The 
  231. first example has magenta blending into red for dwell values from 0 to 64, 
  232. from red to yellow for dwells from 64 to 128, etc. The PCX image file format 
  233. allows users to import Mandelbrot and Julia image files into other software 
  234. such as desktop publishing programs and paint programs. PCX files can also be 
  235. used for Windows wallpaper. 
  236.  
  237.     Print Image
  238.  
  239.     The Print Image command presents the user with nine different printer 
  240. types that are supported, or the command can be quit. 
  241.  
  242.     Epson 9 pin
  243.     Epson 24 pin
  244.     IBM 9 pin
  245.     IBM 24 pin
  246.     LaserJet
  247.     DeskJet 500 B/W
  248.     Epson DM Color
  249.     DeskJet 500 C
  250.     PaintJet
  251.     QUIT
  252.  
  253.     The 9 pin printers will output at 120x144 dpi, the 24 pin at 180x180 dpi, 
  254. the Laserjet, Deskjet 500 B/W and Color at 150x150 dpi and the Epson DM Color 
  255. and Paintjet at 90x90 dpi. Be patient, the print drivers do take time in 
  256. exchange for attractive output. Color is the slowest. Black and white images 
  257. will be dithered. QUIT returns the user to the main menu. 
  258.  
  259.     The Print Image command is basically for quick hardcopy. If you wish to 
  260. print museum quality prints try a DeskJet 500 series printer. Create your 
  261. image and then make a PCX file using one of the 256 color formats. Next, load 
  262. this PCX file into the Paintbrush program that comes with Windows. This is 
  263. usually found in the Accessories window. Next print the image from Paintbrush. 
  264. You will need a 256 color display to do this and the Windows print driver that 
  265. came with the DeskJet printer. Most IBM PC's and clones being sold today come 
  266. with a 256 color display. The DeskJet will print your image with a superb 
  267. color balance at just under 100 dpi. Try an image width of about 750 pixels to 
  268. fill out the 8-1/2 inch page. I've used this method with a Hewlett-Packard 
  269. DesignJet 650C and 36 inch wide paper with images 3300 pixels wide to produce 
  270. colored output that is truly magnificent. If your printer is not supported 
  271. this method can also be used to print your images. The only thing you will 
  272. need is the Windows print driver that came with your printer.
  273.  
  274.     Remember, images my be created which are much wider than your screen. The 
  275. upper left corner of your image will be the only area visible. To see the 
  276. entire image, create a 256 color PCX file and use any paint program that can 
  277. read 256 color images. These can be very attractive. 
  278.  
  279.     Help File       
  280.   
  281.     The Help File command displays the file you are currently reading. 
  282. Clicking on the arrows to the right displays the next or previous page. 
  283.  
  284.     Quit MAND51 
  285.  
  286.     The Quit MAND51 command returns the user to the DOS prompt. 
  287.  
  288.                              Image File Structure
  289.  
  290.     Each image file created by the Mandelbrot/Julia Set Generator begins with 
  291. a 150 byte header. 
  292.  
  293. Byte  Item       Size           Description
  294. ------------------------------------------------------
  295. 0     x           8 byte double  x center point
  296. 8     y           8 byte double  y center point
  297. 16    mag         8 byte double  magnification
  298. 24    a           8 byte double  a for Julia sets
  299. 32    b           8 byte double  b for Julia sets
  300. 40    maxdwell    unsigned int   maximum dwell
  301. 42    width       unsigned int   image width in pixels
  302. 44    mj[2]       char           M/J, image type
  303. 46    partial[2]  char           F/P, full/partial
  304. 48    mask[32]    char           color mask file name
  305. 80    display     integer        display (not used)
  306. 82    pal         integer        palette (not used)
  307. 84    name[50]    char           signature
  308. 134   fill[16]    char           filler
  309.  
  310.     All char strings are terminated with a hexadecimal 00 byte. 
  311.  
  312.     The dwell data follows the header. It should be noted that this is not a 
  313. true image file, rather the dwell values themselves are stored. This allows 
  314. users to color the image with a large variety of color masks. Storing an image 
  315. file might be simpler but for every different color mask a new image file 
  316. would have to be created. 
  317.  
  318.     The dwell data is stored as a series of two byte unsigned integers. Each 
  319. unsigned integer contains the dwell value and a run length corresponding to a 
  320. string of identical dwell values. The number of bits required to hold the 
  321. maximum dwell is first obtained. If the maximum dwell is 511, then 9 bits are 
  322. required, 1023 would require 10 bits, etc. Using 1023 for the maximum dwell as 
  323. an example, the right most 10 bits of the 16 bit integer represents the dwell 
  324. value and the 6 left most bits contain the run length. As a run length of zero 
  325. is not very useful, this value is always incremented by one such that a run 
  326. length of zero equals 1, 1 is 2, etc. Given a maximum dwell of 1023 the 
  327. following 16 bit unsigned integer represents a dwell of 1000 and a run length 
  328. of 32. 
  329.  
  330.                                011111 1111101000
  331.                                    7FE8 hex
  332.  
  333.     When an image is being displayed and the unsigned integer above is read, a 
  334. line of 32 pixels will be drawn using the appropriate color from the active 
  335. color mask for dwell value 1000. 
  336.  
  337.     Each line of a display is encoded with no wraparound. This means that each 
  338. line will end with the display of an encoded unsigned integer and no extra 
  339. pixels of the same dwell will be added for the beginning of the next line even 
  340. if there is room in the run length. 
  341.  
  342.     It should be noted that the maximum run length that can be stored varies 
  343. with the maximum dwell chosen. Files with a maximum dwell of 1023 will have a 
  344. maximum run length of 64, those with maximum dwells of 8191 will only store 
  345. 16. This does not limit a run length because if it exceeds the space available 
  346. in a single unsigned integer it simply creates additional ones until the run 
  347. of dwells has been stored. For this reason images with high maximum dwell 
  348. values are often large in size. This method of file compression strikes a good 
  349. balance between file size and speed when displaying an image. 
  350.  
  351.                      The Mathematics of the Mandelbrot Set
  352.  
  353.     The Mandelbrot set is computed by operating on a fairly simple equation 
  354. that contains complex numbers of the form 
  355.  
  356.                           x + yi where  i = sqrt(-1)
  357.  
  358. The Mandelbrot equation is
  359.  
  360.                                  z <- z^2 + c
  361.  
  362. where
  363.  
  364.                            z = x + yi and c = a + bi
  365.  
  366. substituting these values into z^2 + c we have
  367.  
  368.                               (x + yi)^2 + a + bi
  369.  
  370.                            x^2 + 2xyi - y^2 + a + bi
  371.  
  372. separating the real and imaginary parts of z gives
  373.  
  374.                               x <- x^2 - y^2 + a
  375.  
  376.                                  y <- 2xy + b
  377.  
  378.     To determine whether a point (a,b) in the complex plane is a member of the 
  379. Mandelbrot set, the real and imaginary parts of the equation are iterated. The 
  380. x and y values are first initialized to zero. The constants a and b, the point 
  381. in the plane, are then substituted into the equations giving 
  382.  
  383.                                x <- a and y <- b
  384.  
  385. for the first iteration.
  386.  
  387.     The two new values for x and y, along with the constants a and b, are now 
  388. substituted into the equations again. This procedure (iteration) continues 
  389. until the absolute value of x + yi > 2, ie. sqrt(x^2 + ^y2) > 2. For those 
  390. cases where this value never exceeds 2, the maximum number of iterations is 
  391. preset. A value of about 500 is usually adequate, although this value is 
  392. raised to several thousand when smaller details at high magnification are 
  393. examined. The number of times the equations are iterated before the value of 
  394. sqrt(x^2 + y^2) > 2 is called the dwell. Those initial points (a,b) where the 
  395. dwell is infinite, or for more practical purposes attains the preset maximum, 
  396. are members of the Mandelbrot set. Another way to describe this is to say that 
  397. for points within the Mandelbrot set, the sequence of points produced by this 
  398. iteration procedure is bounded inside a circle of radius 2, where points 
  399. outside the set are unbounded and continue to grow and escape the circle. 
  400.  
  401.     The Mandelbrot set exists entirely within the area defined by 
  402.  
  403.                         -2 <= a <= 2  and  -2 <= b <= 2
  404.  
  405. in the complex plane. A Mandelbrot image is produced by taking this area of 
  406. the complex plane and dividing it into a array of 1200 x 1200 points. Each one 
  407. of these points becomes the constant (a,b). The iteration procedure previously 
  408. described is used on each of the 1.44 million points, coloring each point in 
  409. the Mandelbrot set black and all others white. The algorithm is: 
  410.  
  411.     maxcount <- 1000
  412.     for b <- 2 to -2 stepdown 1/300
  413.     for a <- -2 to 2 step 1/300
  414.       x <- 0
  415.       y <- 0
  416.       count <- 0
  417.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  418.         x <- x^2 - y^2 + a
  419.         y <- 2*x*y + b
  420.         count <- count + 1
  421.       end while
  422.       if count = maxcount plot(a,b,BLACK)
  423.         else plot(a,b,WHITE)
  424.     end for a
  425.     end for b
  426.  
  427.     While the algorithm is not that complex, the amount of computation is 
  428. enormous. Depending on programming language and style, the inner loop has at 
  429. least four multiplications and a square root. For a point in the Mandelbrot 
  430. set this loop is executed 1000 times and there are over a million points to 
  431. check! It is not surprising that the Mandelbrot set was not discovered until 
  432. the age of computers. 
  433.  
  434.     In the Mandelbrot/Julia Set Generator program some additional refinements 
  435. are made to standardize the initial parameters used to generate a specific 
  436. image. Instead of defining the range of (a,b) values used for an area, a 
  437. center point and a magnification are specified. The center point is simply a 
  438. chosen (a,b) value. The length of a side which encloses the area of interest 
  439. is defined as 
  440.  
  441.                             side = 2/magnification
  442.  
  443. The following values can now be defined
  444.  
  445.                          a_minimum = a_center - side/2
  446.  
  447.                          b_maximum = b_center + side/2
  448.  
  449.                                gap = side/width
  450.  
  451. where width is defined as the number of points that make up a side (or on a 
  452. computer screen the number of pixels), and the gap being the distance between 
  453. each point. 
  454.  
  455.     The Mandelbrot set is an interesting image, a sort of cardioid with a 
  456. spiked head attached at the left. The boundary of the set sprouts self similar 
  457. buds of different sizes. Vastly more interesting images are forthcoming when 
  458. we examine the boundary of the Mandelbrot set under higher magnification. To 
  459. obtain higher magnifications we simply divide a smaller area into our array of 
  460. points. For example, the area defined by the center point (-0.77,0.17) and 
  461. magnification 20 is located in the upper valley between the head and the 
  462. cardioid shaped body. 
  463.  
  464.     If we continue with these magnifications, very different and interesting 
  465. images can be produced by coloring the dwell values in specific ways. Along 
  466. with coloring points in the Mandelbrot set black, we can assign different 
  467. colors to other points based upon their dwell value. For example, we might 
  468. assign yellow to dwell values in the range 400 to 499, red to 300 to 399, etc. 
  469. When we do this a great deal more detail begins to appear in the boundary 
  470. regions. This region of interest exists only in a narrow band just outside the 
  471. Mandelbrot set. The skill one uses in choosing the various colors for 
  472. differing dwell values is very important when attempting to produce an 
  473. attractive image. 
  474.  
  475.     The Mandelbrot/Julia Set Generator uses a file called a color mask to 
  476. store the colors used in painting the various dwell values in an image. This 
  477. technique allows many different coloring schemes for a single image. Consider 
  478. the following color mask: 
  479.  
  480.     Dwell Range    Odd Color   Even Color
  481. ----------------------------------------------
  482.     0     9        blue        white
  483.     10    19       red         red
  484.     20    510      yellow      yellow
  485.     511   511      black       black
  486.     -1
  487.  
  488.     Dwell values from 0 to 9 will be colored blue if they are odd numbers and 
  489. white if they are even. Values from 10 to 19 will be colored red, 20 to 510 
  490. yellow and 511 will be colored black. Choosing the maximum dwell value to be 
  491. in the set 2n - 1 maximizes the file compression method the Mandelbrot/Julia 
  492. Set Generator program uses. 
  493.  
  494.     Generating Julia set images is a similar process. The point (a,b) is 
  495. chosen from one of the interesting boundary areas of the Mandelbrot set. This 
  496. value is held constant and the (x,y) value is initialized to the various 
  497. points in the complex plane defined by 
  498.  
  499.                         -2 <= x <= 2  and  -2 <= y <= 2
  500.  
  501.     This would be a magnification of 0.5, actually the Julia image can often 
  502. be enlarged slightly to fill the screen and magnifications from 0.6 to 0.9 are 
  503. often used. 
  504.  
  505.     The algorithm for generating a Julia set is
  506.  
  507.     maxcount <- 1000
  508.     a <- constant
  509.     b <- constant
  510.     for y <- 2 to -2 stepdown 1/300
  511.     for x <- -2 to 2 step 1/300
  512.       count <- 00
  513.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  514.         x <- x^2 - y^2 + a
  515.         y <- 2*x*y + b
  516.         count <- count + 1
  517.       end while
  518.       if count = maxcount plot(a,b,BLACK)
  519.           else plot(a,b,WHITE)
  520.     end for x
  521.     end for y
  522.  
  523.                               Selected References
  524.  
  525. Barnsley, Michael, Fractals Everywhere. San Diego, CA: Academic Press, 1988. 
  526.  
  527. Briggs, John and Peat, F. David Turbulent Mirror. New York: Harper & Row, 
  528.     1989. 
  529.  
  530. Devaney, Robert L.Choas, Fractals, and Dynamics. Menlo Park, CA:Addison-
  531.     Wesley, 1990. 
  532.  
  533. Devaney, Robert L. and Keen, Linda, Editors. Chaos and Fractals, The 
  534.     Mathematics Behind the Computer Graphics: Proceedings of Symposia in 
  535.     Applied Mathematics.Providence, RI: American Mathematical Society, 1989. 
  536.  
  537. Gleick, James Chaos, Making a New Science. New York: Viking Penguin, Inc., 
  538.     1987. 
  539.  
  540. Mandelbrot, Benoit B. The Fractal Geometry of Nature. New York: W. H. Freeman 
  541.     and Co., 1983. 
  542.  
  543. Peitgen, Heinz-Otto and Richter, Peter H. The Beauty of Fractals, Images of 
  544.     Complex Dynamical Systems. Berlin: Springer-Verlag, 1986. 
  545.  
  546. Peitgen, Heinz-Otto and Saupe, Dietmar, Editors. The Science of Fractal 
  547.     Images. New York: Springer-Verlag, 1988. 
  548.  
  549. Pietgen, Heinz-Otto, Jurgens, Hartmut and Saupe, Dietmar Fractals for the 
  550.     Classroom, (Volumes I & II), New York: Springer-Verlag, 1992. (There is a 
  551.     single volume work entitled Chaos and Fractals, New Frontiers of Science, 
  552.     which is essentially the same work as the two volume set above.) 
  553.  
  554. Pickover, Clifford A. Computers Pattern Chaos and Beauty: Graphics from an 
  555.     Unseen World.New York: St. Martin's Press, 1990. 
  556.  
  557. Pickover, Clifford A. Computers and the Imagination: Visual Adventures Beyond 
  558.     the Edge. New York: St. Martin's Press, 1991. 
  559.  
  560. Pickover, Clifford A. Mazes for the Mind. New York: St. Martins Press, 1992. 
  561.  
  562. Schroeder, Manfred Fractals, Chaos, Power Laws, Minutes from an Infinite 
  563.     Paradise.New York: W.H. Freeman and Co., 1991. 
  564.  
  565. Stevens, Roger T. Fractal Programing in C. Redwood City, CA: M&T Publishing, 
  566.     Inc., 1989. 
  567.  
  568. Stevens, Roger T. Advanced Fractal Programing in C. Redwood City, CA: M&T 
  569.     Publishing, Inc., 1990. 
  570.  
  571. Stewart, Ian Does God Play Dice? The Mathematics of Chaos. Oxford: Basil 
  572.     Blackwell, 1989. 
  573.  
  574. Stewart, Ian and Golubitsky, Martin Fearful Symmetry, Is God a Geometer? 
  575.     Oxford: Blackwell, 1992. 
  576.  
  577.                                  Registration
  578.  
  579.     You may freely copy and distribute this shareware Version 5.0 of the 
  580. Mandelbrot/Julia Set Generator. Shareware users who find the Mandelbrot/Julia 
  581. Set Generator useful should support the author and register their copy. The 
  582. form found below should be used for registration. Registered users will 
  583. receive a copy of Version 5.1 of the Mandelbrot/Julia Set Generator with 
  584. additional images and a printed manual. Registered users will also receive 
  585. support, by letter mail or e-mail, for six months from the date of 
  586. registration. 
  587.  
  588.     The Mandelbrot/Julia Set Generator is a "shareware program" and is 
  589. provided at no charge to the user for evaluation. Vendors who distribute 
  590. shareware programs may charge a small fee for an evaluation copy. Feel free to 
  591. share this program with your friends, but please do not give it away altered 
  592. or as part of another system. The essence of "user-supported" software is to 
  593. provide personal computer users with quality software without high prices, and 
  594. yet to provide incentive for programmers to continue to develop new products.  
  595. If you find this program useful and find that you are using the 
  596. Mandelbrot/Julia Set Generator and continue to use the Mandelbrot/Julia Set 
  597. Generator after a reasonable trial period, you must make a registration 
  598. payment of $25. plus $2. shipping to Theron Wierenga. The registration fee 
  599. will license one copy for use on any one computer at any one time. You must 
  600. treat this registered software just like a book. An example is that this 
  601. registered software may be used by any number of people and may be freely moved 
  602. from one computer location to another, so long as there is no possibility of 
  603. it being used at one location while it's being used at another. Just as a book 
  604. cannot be read by two different persons at the same time. 
  605.  
  606.     The registration fee is $25. ($35. outside the United States.) Please 
  607. include $2.00 for shipping and handling. A complete listing of the program, 
  608. which is written in Borland C/C++, is also available for an additional $20.00. 
  609. All prices are in U.S. dollars. 
  610.  
  611.    Checks should be made out to:
  612.  
  613.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  614.  
  615.                               Ombudsman Statement
  616.  
  617.     This program is produced by a member of the Association of Shareware 
  618. Professionals (ASP). The ASP wants to make sure that the shareware principle 
  619. works for you. If you are unable to resolve a shareware-related problem with 
  620. an ASP member by contacting the member directly, ASP may be able to help. The 
  621. ASP Ombudsman can help you resolve a dispute or problem with an ASP member, 
  622. but does not provide technical support for members' products. Please write to 
  623. the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 USA, FAX 616-
  624. 788-2765 or send a CompuServe message via CompuServe Mail to ASP Ombudsman 
  625. 70007,3536. 
  626.  
  627.                                  User Support
  628.  
  629.     Registered users will receive support, by letter mail or e-mail, for six 
  630. months from the date of registration on any problems they encounter. The 
  631. author is available by e-mail on the internet at mups_wiereng@wmich.edu. 
  632.  
  633.                                Registration Form
  634.                   Mandelbrot/Julia Set Generator, Version 5.0
  635.  
  636.  
  637.     Name____________________________________________________________
  638.  
  639.     Address_________________________________________________________
  640.              
  641.     City_______________________________________State_____Zip________
  642.  
  643.     Disk size desired:       5 1/4 in._______       3 1/2 in._______
  644.  
  645.     Registration fee . . . . . . . . . . . . . . . $25.00 __________
  646.     Registration fee (Outside the USA) . . . . . .  35.00 __________
  647.     Borland C/C++ program code . . . . . . . . . .  20.00 __________
  648.     Shipping . . . . . . . . . . . . . . . . . . .        ___2.00___
  649.  
  650.     Total enclosed . . . . . . . . . . . . . . . .        __________
  651.                     (All prices are in U.S. dollars.)
  652.  
  653.     Method of payment: Check or MO______ MasterCard______ Visa______
  654.  
  655.     Account number____________________________ Expir. date__________
  656.  
  657.     Signature (necessary)___________________________________________ 
  658.  
  659.     How did you receive your copy of this program?__________________
  660.  
  661.     ________________________________________________________________
  662.  
  663.     Suggested improvements__________________________________________
  664.  
  665.     ________________________________________________________________
  666.  
  667.     ________________________________________________________________
  668.  
  669.     ________________________________________________________________
  670.  
  671.  
  672.                 The Mandelbrot/Julia Set Generator, Version 5.0
  673.                            is a software product of
  674.                Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  675.  
  676.